package com.test;

public class 合并两个有序数组 {

    public void merge(int[] nums1, int m, int[] nums2, int n) {
        /*
        输入：nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
        输出：[1,2,2,3,5,6]
         */

        //定义三个指针，
        // 指针1指向数组1中存在的最后一个元素的位置；
        // 指针2指向数组2的最后一个位置；
        // 指针3指向数组1的最后一个位置

        int p1=m-1;
        int p2=n-1;
        int p3=nums1.length-1;

        //当p2指针小于0，则数组就已经合并结束了
        while (p2>=0){
            //当p1指针大于零，并且p1所指向的元素大于p2，这时候会同时移动p2和p3指针
            if (p1>=0 && nums1[p1]>nums2[p2]){
                nums1[p3--]=nums1[p1--];
            }else {
                nums1[p3--]=nums2[p2--];
            }
        }

    }
}
